package com.dm.cloud.configurations.activiti;

import lombok.extern.log4j.Log4j2;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Log4j2
@Configuration
@ConditionalOnProperty(prefix = "custom.activiti", name = "init", havingValue = "true")
public class CustomProcessEngineConfig {

    private DataSource dataSource;

    public CustomProcessEngineConfig(DataSource dataSource){
        this.dataSource = dataSource;
    }
//
////    @Bean
//    public ProcessEngine processEngine() {
//        //创建流程引擎配置对象
//        ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
//        //设置数据库加载
//        processEngineConfiguration.setDataSource(dataSource);
//        /**
//         * 数据库建表策略
//         * DB_SCHEMA_UPDATE_FALSE = "false"; 如果数据库没有表，自动创建六层引擎的23张表，如果已经创建，报异常错误
//         * DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";  当流程引擎被创建石，自动创建数据库表，等到流程引擎关闭时，删除掉所有表
//         * DB_SCHEMA_UPDATE_TRUE = "true"; 如果数据库没有表会自动创建表，如果有表不创建。如果activiti的sql脚本有更新，那么流程引擎再次建立时，会自动更新数据库的表（需要用到的）
//         */
//        processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
//        processEngineConfiguration.setHistory(ProcessEngineConfiguration.HISTORY_FULL);
//        //创建流程引擎对象
//        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
//        log.info(String.format("ProcessEngine Init For Camunda:%s",processEngine.getName()));
//        return processEngine;
//    }
//
//    @Bean
//    public RepositoryService getRepositoryService(){
//        return processEngine().getRepositoryService();
//    }
//
//    @Bean
//    public RuntimeService  getRuntimeService(){
//        return processEngine().getRuntimeService();
//    }
//
//    @Bean
//    public FormService  getFormService(){
//        return processEngine().getFormService();
//    }
//
//    @Bean
//    public TaskService  getTaskService(){
//        return processEngine().getTaskService();
//    }
//
//    @Bean
//    public HistoryService getHistoryService(){
//        return processEngine().getHistoryService();
//    }
//
//    @Bean
//    public ManagementService getManagementService(){
//        return processEngine().getManagementService();
//    }
//
//    @Bean
//    public ProcessEngineConfiguration  getProcessEngineConfiguration(){
//        return processEngine().getProcessEngineConfiguration();
//    }
}
